﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Prisa.Entities;
using Prisa.DataAccess;
using Microsoft.Practices.Unity;

namespace Prisa.BussinesLogic
{
    public class DetalleCompraBL:IDetalleCompraBL
    {
        [Dependency]
        public IDetalleCompraDAO detalleDAO { get; set; }

        [Dependency]
        public ICompraDAO compraDAO { get; set; }

        [Dependency]
        public IProductoDAO productoDAO { get; set; }

        [Dependency]
        public ICategoriaDAO categoriaDAO { get; set; }

        public List<DETALLECOMPRA> GetAllFromDetalleCompraByCompraId(int id)
        {
            return detalleDAO.GetAllFromDetalleCompraByCompraId(id);
        }

        public List<DETALLECOMPRA> GetFromDetalleCompraByProductoAndCompraId(string descripcion, int id)
        {
            return detalleDAO.GetFromDetalleCompraByProductoAndCompraId(descripcion,id);
        }

        public DETALLECOMPRA GetFromProductoByDetalleCompraId(int idproducto, int idcompra)
        {
            return detalleDAO.GetFromProductoByDetalleCompraId(idproducto,idcompra);
        }


        public void RemoveDetalleCompraByProductoIdAndCompraId(int idProd, int idCompra)
        {
            var compra = compraDAO.GetFromCompraById(idCompra);
            detalleDAO.RemoveDetalleCompraByProductoIdAndCompraId(idProd, idCompra);
            
            foreach (var item in compra.DETALLECOMPRAs)
            {
                if (idProd == item.PRODUCTO.Id)
                {
                    var producto = productoDAO.GetFromProductoById(item.PRODUCTO.Id);
                    var categoria = categoriaDAO.GetFromCategoriaById(item.PRODUCTO.CategoriaId);
                    var actproducto = producto;
                    actproducto.CATEGORIA = categoria;
                    actproducto.Stock = producto.Stock - item.Cantidad;
                    productoDAO.UpdateProducto(actproducto);
                }

                

            }

        }
    }
}
